package org.rslai.autotest.core.page;

import java.io.IOException;

import javax.mail.MessagingException;

import org.rslai.util.email.IMAPinfo;
import org.rslai.util.email.POP3info;
import org.rslai.util.email.SMTPinfo;

/**
 * Email处理方法（SMTP、POP、IMAP协议）
 * @author rslai
 */
public interface Email {

	/**
	 * 返回smtp服务器地址
	 * @return smtp服务器地址
	 */
	public String getSmtpServerHost();

	/**
	 * 返回pop3服务器地址
	 * @return pop3服务器地址
	 */
	public String getPop3ServerHost();

	/**
	 * 返回imap服务器地址
	 * @return imap服务器地址
	 */
	public String getImapServerHost();

	/**
	 * 使用SMTP协议发送邮件
	 * @param smtpInfo SMTP设置信息，例： <br>
	 *		SMTPinfo mailInfo = new SMTPinfo(); <br>
	 *		mailInfo.setMailServerHost("smtp.xinnet.asia"); <br>
	 *		mailInfo.setMailServerPort("25"); <br>
	 *		mailInfo.setValidate(true); <br>
	 *		mailInfo.setUserName("at001@xinnet.asia"); <br>
	 *		mailInfo.setPassword("aaa111"); // 您的邮箱密码 <br>
	 *		mailInfo.setFromAddress("at001@xinnet.asia"); <br>
	 *		mailInfo.setToAddress("at001@xinnet.asia"); <br>
	 *		mailInfo.setSubject("设置邮箱标题"); <br>
	 *		mailInfo.setContent("设置邮箱内容"); <br>
	 * @return 发送成功返回true，发送失败抛出异常
	 * @throws MessagingException 
	 */
	public Boolean smtp(SMTPinfo smtpInfo) throws MessagingException;

	/**
	 * 使用POP3协议收取所有邮件
	 * @param pop3Info POP3设置信息，例： <br>
	 * 		POP3info pop3Info = new POP3info(); <br>
	 *		pop3Info.setMailServerHost("pop.xinnet.asia"); <br>
	 *		pop3Info.setUserName("at001@xinnet.asia"); <br>
	 *		pop3Info.setPassword("aaa111"); <br>
	 * @return 发送成功返回true，发送失败抛出异常
	 * @throws MessagingException
	 * @throws IOException
	 */
	public Boolean pop3(POP3info pop3Info) throws MessagingException, IOException;

	/**
	 * 
	 * @param imapInfo IMAP设置信息，例： <br>
	 * 		IMAPinfo imapInfo = new IMAPinfo(); <br>
	 * 		imapInfo.setMailServerHost(this.email.getImapServerHost()); <br>
	 * 		imapInfo.setUserName("at001@xinnet.asia"); <br>
	 * 		imapInfo.setPassword("aaa111"); <br>
	 * @return 接收成功返回true，发送失败抛出异常
	 * @throws Exception
	 */
	public Boolean imap(IMAPinfo imapInfo) throws Exception;

}
